Certifying Code Generation Runs with Coq: A Tool Description
نویسندگان
چکیده
In this tool description paper we present a certifying code generation phase. Our code generation phase takes intermediate language programs and translates them into MIPS assembler code. Each time our code generation is invoked a proof script is emitted. This proof script is used as a certificate to guarantee the correctness of the code generation run. It is checked in the Coq theorem prover. Once this has been successfully done we can be sure that the code generation has been carried out correctly. Checking the generated proof scripts has turned out to be a bottleneck of certifying compilation. This paper is based on an implementation which uses – among other techniques – checker predicates to overcome this bottleneck. These are predicates formalized in an executable way that can be easily evaluated by the Coq theorem prover to speed up the certificate checking process. This paper presents the certifying code generation phase introduced in [5] and focuses on its implementation.
منابع مشابه
On Certifying Code Generation
Guaranteeing correctness of compilation is a major precondition for correct software. Code generation can be one of the most errorprone tasks in a compiler. One way to achieve trusted compilation is certifying compilation. A certifying compiler generates for each run a proof that it has performed the compilation run correctly. The proof is checked in a separate theorem prover. If the theorem pr...
متن کاملA Tool for the Certification of PLCs based on a Coq Semantics for Sequential Function Charts
In this report we describe a tool framework for certifying properties of PLCs: CERTPLC. CERTPLC can handle PLC descriptions provided in the Sequential Function Chart (SFC) language of the IEC 61131–3 standard. It provides routines to certify properties of systems by delivering an independently checkable formal system description and proof (called certificate) for the desired properties. We focu...
متن کاملin ri a - 00 08 48 35 , v er si on 2 - 1 1 Se p 20 06 1 CoLoR : a Coq Library on Rewriting and termination
Coq is a tool allowing to certify proofs. This paper describes a Coq library for certifying termination proofs.
متن کاملCertiCoq: A verified compiler for Coq
CertiCoq is a mechanically verified, optimizing compiler for Coq that bridges the gap between certified high-level programs and their translation to machine language. We outline its design as well as the main foundational and engineering challenges involved in building and certifying a compiler for Coq in Coq.
متن کاملCertifying floating-point implementations using Gappa
High confidence in floating-point programs requires proving numerical properties of final and intermediate values. One may need to guarantee that a value stays within some range, or that the error relative to some ideal value is well bounded. Such work may require several lines of proof for each line of code, and will usually be broken by the smallest change to the code (e.g. for maintenance or...
متن کامل